package com.zgh.plateform.service;

import com.xxg.base.module.Operater;
import com.xxg.base.module.Page;
import com.xxg.base.module.PageData;
import com.xxg.exception.BaseException;
import com.zgh.plateform.module.*;
import org.springframework.stereotype.Service;

import java.util.HashMap;
import java.util.List;
import java.util.Map;

@Service
public interface IPlateformService {
	
	//常见问题
		//public List<FAQ> getFAQList(Map<String, Object> params ,Operater operater)throws BaseException;
		public FAQ saveFAQ(FAQ FAq, Operater operater)throws BaseException;
		public List<FAQ> listFAQ(Map<String, Object> params, Operater operater, PageData pageData) throws BaseException;
		public Integer countFAQ(Map<String, Object> params, Operater operater) throws BaseException;
		public Page<FAQ> showFAQPage(Page<FAQ> page, Operater operater) throws BaseException;
		public void deleteFAQ(Long FAQId, Operater operater)throws BaseException;
		//public void changeOrder(Long FAQId,Long destination,Operater operater)throws BaseException; //更改排序
		public void changeSort(List<HashMap> map, Operater operater)throws BaseException;
		public FAQ updateFAQ(FAQ FAq, Operater operater)throws BaseException;
		public FAQ publishFAQ(Long FAQId, Operater operater)throws BaseException;  //发布
		public FAQ dispublishFAQ(Long FAQId, Operater operater)throws BaseException; //取消发布
		
	
		//协议管理
		public ProtocolSetting saveProtocolSetting(ProtocolSetting protocolSetting, Operater operater)throws BaseException;
		public List<ProtocolSetting> listProtocolSetting(Map<String, Object> params, Operater operater, PageData pageData) throws BaseException;
		public Integer countProtocolSetting(Map<String, Object> params, Operater operater) throws BaseException;
		public Page<ProtocolSetting> showProtocolSettingPage(Page<ProtocolSetting> page, Operater operater) throws BaseException;
		public ProtocolSetting updateProtocolSetting(ProtocolSetting protocolSetting, Operater operater)throws BaseException;
		public ProtocolSetting publishProtocolSetting(Long protocolSettingId, Operater operater)throws BaseException;
		//public ProtocolSetting getProtocolSettingById(Long id ,Operater op);
		public ProtocolSetting getNewestProtocolSetting(Map<String, Object> params, Operater op);


	//版本功能管理
	public Version saveVersion(Version version, Operater operater)throws BaseException;
	public void deleteVersion(Long id, Operater operater)throws BaseException;
	public List<Version> listVersion(Map<String, Object> params, Operater operater, PageData pageData) throws BaseException;
	public Integer countVersion(Map<String, Object> params, Operater operater) throws BaseException;
	public Page<Version> showVersionPage(Page<Version> page, Operater operater) throws BaseException;
	public Version updateVersion(Version version, Operater operater)throws BaseException;
	public Version publishVersion(Long versionId, Operater operater)throws BaseException;
	public Version dispublishVersion(Long versionId, Operater operater)throws BaseException; //取消发布
	public boolean validVersionNo(String versionNo, Operater operater)throws BaseException;//已经存在 --false 不存在 true

	//问题反馈管理
	//问题反馈类型管理
	public QusFeedbackType saveQusFeedbackType(QusFeedbackType qusFeedbackType, Operater operater)throws BaseException;
	public QusFeedbackType updateQusFeedbackType(QusFeedbackType qusFeedbackType, Operater operater)throws BaseException;
	public List<QusFeedbackType> listQusFeedbackType(Map<String, Object> params, Operater operater, PageData pageData) throws BaseException;
	public Integer countQusFeedbackType(Map<String, Object> params, Operater operater) throws BaseException;
	public Page<QusFeedbackType> showQusFeedbackTypePage(Page<QusFeedbackType> page, Operater operater) throws BaseException;
	public void deleteQusFeedbackType(Long id, Operater operater)throws BaseException;

	//问题管理
	public String getNextQusSeq(Operater operater)throws BaseException;
	public QusFeedback saveQusFeedback(QusFeedback qusFeedback, Operater operater)throws BaseException;
	public QusFeedback updateQusFeedback(QusFeedback qusFeedback, Operater operater)throws BaseException;
	public List<QusFeedback> listQusFeedback(Map<String, Object> params, Operater operater, PageData pageData) throws BaseException;
	public Integer countQusFeedback(Map<String, Object> params, Operater operater) throws BaseException;
	public Page<QusFeedback> showQusFeedbackPage(Page<QusFeedback> page, Operater operater) throws BaseException;
	public void deleteQusFeedback(Long id, Operater operater)throws BaseException;
	public QusFeedback replyQus(Long id, String content, Operater operater)throws BaseException;
	
	public QusAttach insertQus(QusAttach qus, Operater operater)throws BaseException;
	public void delQus(Long id, Operater operater)throws BaseException;
	public List<QusAttach> getAttachListByParams(Map<String, Object> params, Operater operater)throws BaseException;

	//系统参数
	public SysParams saveSysParams(SysParams sysParams, Operater operater)throws BaseException;
	public SysParams updateSysParams(SysParams sysParams, Operater operater)throws BaseException;
	public List<SysParams> listSysParams(Map<String, Object> params, Operater operater, PageData pageData) throws BaseException;
	public Integer countSysParams(Map<String, Object> params, Operater operater) throws BaseException;
	
	//广告页面设定
	public String getNextAdsSeq(Operater operater)throws BaseException;
	public AdsPage saveAdsPage(AdsPage ads, Operater operater)throws BaseException;
	public AdsPage updateAdsPage(AdsPage ads, Operater operater)throws BaseException;
	public List<AdsPage> listAdsPage(Map<String, Object> params, Operater operater, PageData pageData) throws BaseException;
	

}
